#ifndef REFLECTION_METATABLE_H
#define REFLECTION_METATABLE_H

namespace reflection
{
    class MetaTable
    {
    public:
        MetaTable() : _base(nullptr) {}

        MetaTable* getBaseClass() const { return _base; }

        bool isDerivedFrom(MetaTable* other) const
        {
            MetaTable* parent = _base;
            while (parent != nullptr)
            {
                if (parent == other)
                    return true;

                parent = parent->_base;
            }
            return false;
        }
    protected:
        MetaTable* _base;
    };
}


void TestReflection()
{

}
#endif